home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / begincpp / #5_ver2.cpp < prev    next >
C/C++ Source or Header  |  1990-08-04  |  1KB  |  89 lines

  1. #include <stdio.h>
  2.  
  3. class animal {
  4.      public:
  5.           virtual void identify() { printf("%s\n", "animal"); }
  6. };
  7.  
  8. class mammal : public animal {
  9.      public:
  10.           void identify() { printf("%s\n", "mammal"); }
  11. };
  12.  
  13. class bird : public animal {
  14.      public:
  15.           void identify() { printf("%s\n", "bird"); }
  16. };
  17.  
  18. class dog : public mammal {
  19.      public:
  20.           void identify() { printf("%s\n", "dog"); }
  21. };
  22.  
  23. class eagle : public bird {
  24.      public:
  25.           void identify() { printf("%s\n", "eagle"); }
  26. };
  27.  
  28. void print1(void), print2(void), print3(void);
  29.  
  30. main()
  31. {
  32.      print1();
  33.      print2();
  34.      print3();
  35. }
  36.  
  37. void print1()
  38. {
  39.      animal *ap = new animal;    ap->identify();
  40.      mammal *mp = new mammal;    mp->identify();
  41.      bird   *bp = new bird;      bp->identify();
  42.      dog    *dp = new dog;       dp->identify();
  43.      eagle  *ep = new eagle;     ep->identify();
  44.  
  45.      printf("\n");
  46. }
  47.  
  48. void print2()
  49. {
  50.      animal *ap = new animal;
  51.      ap->identify();                    
  52.  
  53.      ((mammal *) ap)->identify();          
  54.      mammal *mp = (mammal *) ap;
  55.      mp->identify();                    
  56.  
  57.      printf("\n");
  58. }
  59.  
  60. void print3()
  61. {
  62.      animal a, *ap = &a;
  63.      mammal m;
  64.      eagle  e;
  65.  
  66.      ap->identify();
  67.      
  68.      ap = &m;
  69.      ap->identify();
  70.  
  71.      printf("\n");
  72. }
  73.  
  74. /* output:
  75.  
  76. animal
  77. mammal
  78. bird
  79. dog
  80. eagle
  81.  
  82. animal
  83. animal
  84. animal
  85.  
  86. animal
  87. mammal
  88.  
  89. */